Estoy desarrollando una aplicación web en la pila MERN, mientras lo hacía me encontré con un error, por favor ayuda. Cuando trato de actualizar el usuario, me da un error, la devolución de llamada debe ser una función, obtuve '[objeto Objeto]'.
Esta es la API.
Se garantiza que el usuario siempre existe.
module.exports.addBlog=(req,res)=>{ const {title,data} = req.body.blog; console.log(title,data); const {email} = req.body; const newblog ={ title, data } userSchema.findOneAndUpdate( {email}, {$push:{blogArray:newblog}}, {upsert:true}, {useFindAndModify:false} ) .then(res=>console.log(res)) .catch(err=>console.log(err)); return res.json({msg:"Blog added successfully"}); }Este es el esquema de usuario.
const userSchema = new mongoose.Schema({ firstname:{ type:String, required:true, lowercase:true }, lastname:{ type:String, required:true, lowercase:true }, email:{ type:String, required:true, lowercase:true }, password:{ type:String, required:true }, blogArray:[ { title:{ type:String, required:true }, data:{ type:String, required:true } } ] });findOneAndUpdate tiene 3 firmas posibles:
findOneAndUpdate( filter: FilterQuery<TSchema>, update: UpdateQuery<TSchema> | TSchema, callback: MongoCallback<FindAndModifyWriteOpResultObject<TSchema>>, ): void; findOneAndUpdate( filter: FilterQuery<TSchema>, update: UpdateQuery<TSchema> | TSchema, options?: FindOneAndUpdateOption<TSchema>, ): Promise<FindAndModifyWriteOpResultObject<TSchema>>; findOneAndUpdate( filter: FilterQuery<TSchema>, update: UpdateQuery<TSchema> | TSchema, options: FindOneAndUpdateOption<TSchema>, callback: MongoCallback<FindAndModifyWriteOpResultObject<TSchema>>, ): void;Está tratando de usar la firma n. ° 2, la que utiliza una promesa, por lo que debe cambiar su sintaxis a:
userSchema.findOneAndUpdate( {email}, {$push:{blogArray:newblog}}, {upsert:true, useFindAndModify:false}, ) .then(res=>console.log(res)) .catch(err=>console.log(err));ver todos los tipos de nodos de Mongos aquí